# -*- encoding: utf-8 -*-

"""
-----------------------------------------------
@File       : 6.the_min_depth_of_binary_tree.py
@Author     : maixiaochai
@Email      : maixiaochai@outlook.com
@CreatedOn  : 2021/12/6 13:56
-----------------------------------------------
    给定一个二叉树，找出其最小深度
    最小深度是从根节点到最近叶子节点的最短路径上的节点数量
    叶子节点：指没有子节点的节点

    给定二叉树 [3, 9, 20, 'null', 'null', 15, 7]
        3
       /\
      9  20
         /\
        15 7
    返回它的最小深度 2

    todo: [2021-12-06] 未完，因为框架中的 TreeNode暂时没实现，导致后边的内容没法进行
"""
from queue import Queue


def min_depth(root):
    if root == 'null':
        return 0

    q = Queue()

    # 向队列尾部添加元素
    q.put(root)

    # root 本身就是一层，depth初始化为 1
    depth = 1

    while not q.empty():
        size = q.qsize()

        # 当前队列中的所有节点向四周扩散
        for i in range(size):
            cur = q.get()

            # 判断是否到达终点


def demo():
    """
        测试 Queue的一些基本操作的影响
    """
    q = Queue()
    print(q.qsize())

    q.put('a')
    print(f'after put: {q.qsize()}')

    data = q.get()
    print(f'data: {data}')
    print(f'after get: {q.qsize()}')


if __name__ == '__main__':
    demo()
